61 #define CRC16_POLY 0x1021
62 #define CRC16_INIT 0xFFFF
64 static const uint8_t myData[9] = {0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
65 static uint16_t calculateCRC16(uint8_t* data, uint32_t length);
69 volatile uint16_t hwCalculatedCRC, swCalculatedCRC;
73 WDT_A_hold(WDT_A_BASE);
78 CRC32_set8BitDataReversed(myData[ii], CRC16_MODE);
81 hwCalculatedCRC = CRC32_getResult(CRC16_MODE);
84 swCalculatedCRC = calculateCRC16((uint8_t*)myData, 9);
92 static uint16_t calculateCRC16(uint8_t* data, uint32_t length)
96 uint16_t crc = 0xFFFF;
99 uint32_t msg_size = length;
101 for(
i = 0 ;
i < msg_size ;
i ++)
103 msg = (pmsg[
i] << 8);
104 for(j = 0 ; j < 8 ; j++)
106 if((msg ^ crc) >> 15) crc = (crc << 1) ^
CRC16_POLY;